<?php

/**
 * 
 */


class GenerarInformeProyectoController extends Sgit_Controller_Action
{

    protected $_checkZona = true;
    protected $_checkAcceso = false;

    protected $_main_model = 'InformeElectricidadMensualProyecto';

    function _begin()
    {

        $this->_element->TipoFacturacion=new Sgit_Form_Element_Select_TipoFacturacion('tipo_facturacion');
    }
    
    
    
    
    /**
     * ElectricidadController::_comun()
     * 
     * elementos comunes para imputacion,facturacio,exceso,margen
     * 
     */


    function testAction()
    {
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(TRUE);
        
        
        //$this->_model->default->trx_viejo_nuevo();
        //$this->_model->default->trx_viejo_nuevo_datacenter();
        //$this->_model->default->trx_viejo_nuevo_salas();
    }


    function imputarAction()
    {

        if(!$this->_hasParam('anio'))
           $this->setParam('anio',date('Y')) ;
        if(!$this->_hasParam('mes'))
           $this->setParam('mes',date('n')) ;
        
        

        $filtros = new Sgit_Form_Filtros();
        $f_anio = new Sgit_Form_Element_Select_Year('anio');
        $f_anio->setLabel('Año Imputación');
        $filtros->addFormSelect($f_anio);

        $f_mes = new Sgit_Form_Element_Select_Mes('mes');
        $f_mes->setLabel('Mes Imputación');
        $filtros->addFormSelect($f_mes);

        $values = $this->_getFiltrosValues($filtros);
        $filtros->myRender();


        if($values['mes'] && $values['anio'])
        {
             
            $fecha_imputacion = new Zend_Date();
            $fecha_imputacion->setDay(1)->setYear($values['anio'])->setMonth($values['mes']);
            
            $this->view->mes_imputacion = $values['mes'];
            $this->view->anio_imputacion = $values['anio'];

            if($fecha_imputacion->isEarlier(Zend_Date::now(),Zend_Date::DATES))
            {
                
                $m_imp=new   Application_Model_InformeElectricidadMensualDatacenter();
                if(!$imputacion = $m_imp->getRow(array('id_zona = ?'=>(int)$this->_idZona,'mes = ?'=>(int)$values['mes'] ,'anio = ?'=>(int)$values['anio'])))
                {
                    $this->view->yaimputado=FALSE;
                    $this->view->earlier=FALSE;

                    $this->view->rows = $this->_model->default->imputarElectricidadProyectos($this->_idZona, $values['mes'], $values['anio']);

                   
                    $this->view->suma = Sgit_Util_Suma::run($this->view->rows, array('consumo_it','contadores','leidos'));

                }else{
                    
                    $this->view->yaimputado=TRUE;
                    $this->view->imputacion=$imputacion;
                    
                }
              
            }else{
                $this->view->earlier=TRUE;
            }

        }
        
       
    }
    
    
    function imputarProyectoAction()
    {

        if(!$this->_hasParam('anio')){
            $this->setParam('anio',date('Y'));
        }
        
        $this->setParam('anio', 2012);
        
        $filtros = new Sgit_Form_Filtros();
        $f_proyectos = new Sgit_Form_Element_Select_Proyectos('id_proyecto');
        $filtros->addFormSelect($f_proyectos);


        $f_anio = new Sgit_Form_Element_Select_Year('anio');
        $f_anio->setLabel('Año Imputación');
        $filtros->addFormSelect($f_anio);


        $values = $this->_getFiltrosValues($filtros);
        $filtros->myRender();

        $id_proyecto=  $this->_getParam('id_proyecto');
        


        if($id_proyecto)
        {
            $fecha=new Zend_Date();
            $fecha->setDay(1);
			
            $where['id_proyecto=?']=$id_proyecto;
            if(is_numeric($values['anio']))
                $where['anio=?']=$values['anio'];
            
            $rows =  $this->_model->default->getAll($where);
 
 


  
            foreach($rows as &$v){
                //facturacion
                $input = $this->_model->default->showInput2($v);
                
                // $record["input_coeficiente_facturacion"]=$input['coeficiente'];
                
                $v["text_tipo_facturacion"]=$this->_element->TipoFacturacion->getMultiOption($v['tipo_facturacion']).' '.$input;;
                
        
            }
           $this->view->rows=$rows;

            foreach($this->view->rows as &$v){
                $fecha->setMonth($v['mes'])->setYear($v['anio']);
                $v['fecha']=$fecha->get('MMM-yy');
            }
        }

    }


    function imputaAction()
    {

        $mes = $this->_getParam('mes');
        $anio = $this->_getParam('anio');

        $data=array();
        foreach ($this->getRequest()->getParams() as $k => $v)
        {
            
            if (strpos($k, 'k_aplicado') !== false)
            {
                $id_proyecto = str_replace('k_aplicado', '', $k);
                $data[$id_proyecto]['coeficiente_repercusion_aplicado'] = $v;
            }
            
            if (strpos($k, 'precio_aplicado') !== false)
            {
                $id_proyecto = str_replace('precio_aplicado', '', $k);
                $data[$id_proyecto]['precio_kwh_aplicado'] = $v;
            }
            
            if (strpos($k, 'k_facturacion') !== false)
            {
                $id_proyecto = str_replace('k_facturacion', '', $k);
                $data[$id_proyecto]['coeficiente_facturacion'] = $v;
            }
            if (strpos($k, 'tarifa_plana') !== false)
            {
                $id_proyecto = str_replace('tarifa_plana', '', $k);
                $data[$id_proyecto]['tarifa_plana'] = $v;
            }
        }
        
        
        
        $db=Zend_Registry::get("database");
        $db->beginTransaction();
        try {
            $this->_model->default->imputaElectricidadProyectos($data, $this->_idZona, $mes, $anio);
            $json['status'] = 'ok';
            $db->commit();
        } catch (Exception $e) {
            $db->rollBack();
            $json['status'] = 'ko';
            $json['msg']=$this->view->msg($e,'error',null,false);
        }
        
        

        
        $this->_helper->json($json);


    }
    
    
    function imputaProyectoAction()
    {
        
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(TRUE);
        
        $id_proyecto=$this->_getParam('id_proyecto');
        $mes_imputacion = $this->_getParam('mes');
        $anio_imputacion = $this->_getParam('anio');
        $save = $this->_getParam('save');
        

        $data['coeficiente_repercusion_aplicado'] = $this->_getParam('k_aplicado');
        $data['precio_kwh_aplicado'] = $this->_getParam('precio_aplicado');
        $data['coeficiente_facturacion'] = $this->_getParam('k_facturacion');
        $data['tarifa_plana'] = $this->_getParam('tarifa_plana');
        
        $db=Zend_Registry::get("database");
        $db->beginTransaction();
        
        

        try {
            $record= $this->_model->default->imputaElectricidadProyecto($id_proyecto, $data,  $mes_imputacion, $anio_imputacion);

            $record['imputacion']=$this->view->numEs($record['imputacion']);
            $record['facturacion']=$this->view->numEs($record['facturacion']);
            $record['consumo_facturable']=$this->view->numEs($record['consumo_facturable']);
            $record['consumo_it']=$this->view->numEs($record['consumo_it']);
            
            
            $record['tipo_facturacion']= $this->_element->TipoFacturacion->getMultiOption($record['tipo_facturacion']);
            $record['status']='ok';
            
            if($save=='save'){
              
                //graba imputacion tabla global resumen
               
                
                /*
                //graba imputacion tabla salas resumen
                $imp = new Application_Model_InformeElectricidadMensualSalas();
                $imp->updateImputacion($this->_idZona, $mes_imputacion, $anio_imputacion);
                 */
                $m_InformeElectricidadMensualDatacenter = new Application_Model_InformeElectricidadMensualDatacenter();
                $m_InformeElectricidadMensualDatacenter->updateImputacion($this->_idZona, $mes_imputacion, $anio_imputacion);

               
                $db->commit();
                
               
            }else{
                $db->rollBack();
                
            }
            
            $this->_helper->json($record);
            
            

        } catch (Exception $e) 
        {
  
            $db->rollBack();
            $json['status'] = 'ko';
            $json['msg']=$this->view->msg($e,'error',null,false);
        }
  
  
  
    }
    

    function borrarAction()
    {

        $mes = $this->_getParam('mes');
        $anio = $this->_getParam('anio');


        $this->_model->default->borraImputacionElectricidadProyectos($this->_idZona, $mes, $anio);

        $json['status'] = 'ok';
        $this->_helper->json($json);


    }
}
